Here we outline a workflow with algorithmic support in R for comparing our conceptual model to the existing literature corpus, the government policy documents and a qualitative assessment. We apply these findings to systematically evaluate whether each component of our conceptual model is supported, refuted, missing from the literature and/or policy documents. We then synthesize this into a justified and adjusted version of the model.
We build a semi-automated evidence synthesis framework that treats our documents like a team of virtual reviewers. The core idea is to define the core elements from our simple conceptual model (e.g. canteen regulation, staff training, food safety, nutrition education, etc.), search and summarize what each document says about each element, score the strength and direction of evidence per element, compare and synthesize to get a high-level view of agreement, gaps, and inconsistencies.
As a first step we framed the decision of implementing school meal policy. We determined our general understanding of the decision problem in the form of a simple causal model representing the important costs benefits and risks that policy will have at the school level.
Figure 1. Conceptual model of school nutrition policy
impacts. The diagram illustrates key variables influencing student
health and learning outcomes in the context of school meal
interventions. Variables are color-coded by type: management actions
(blue) represent components that can be directly modified by policy
(e.g. canteen change, nutrition lessons); costs (brown) reflect resource
needs for implementation; risks (pink) represent contextual or
behavioral barriers such as off-campus consumption or food culture and
advertising; and benefits (green) are the desired outcomes, including
on-campus consumption, student health, and student learning. Arrows
indicate hypothesized causal relationships, with thicker arrows denoting
stronger influence.
We performed a review of policy and literature documents and saved the text of the reviews together with the bib files of both the literature and policy review.
# Load .txt files
literature_text <- tolower(readLines("text_Review/Text_Lit_Review.txt"))
policy_text <- tolower(readLines("text_Review/Text_Policy_Review_Eng.txt"))
bib_policy <- read.bib("bib/school_meal_policy.bib")
bib_texts_policy <- tolower(sapply(bib_policy, function(x) {
paste(
x$title,
x$abstract,
if (!is.null(x$annote)) paste(x$annote, collapse = " ") else "",
collapse = " "
)
}))
# Load BibTeX literature entries as plain text
bib_literature <- read.bib("bib/school_meal_literature.bib")
# Load BibTeX literature entries as plain text
bib_texts_literature <- tolower(sapply(bib_literature, function(x) {
paste(
x$title,
x$abstract,
if (!is.null(x$annote)) paste(x$annote, collapse = " ") else "",
collapse = " "
)
}))
To compare our conceptual model to the existing literature, the government policy documents and our qualitative assessment we search the corpus of each for key terms.
Infrastructure, equipment, and capacity-building components needed for food preparation and delivery in schools.
food_tech_training = c(
"kitchen equipment", "cooking equipment", "commercial kitchen",
"school meal preparation", "technical food support",
"canteen operations", "food service logistics",
"kitchen operations", "meal service infrastructure",
"food production capacity", "food storage infrastructure",
"kitchen staff training", "food preparation training",
"school catering system", "school meal delivery",
"bulk cooking systems", "school kitchen upgrade",
"food handling facility", "school feeding infrastructure", "trained and educated on proper nutrition"
)
Time, personnel, and instructional capacity needed for teachers and staff to implement nutrition interventions.
teaching_resources = c(
"teaching workload", "teacher time", "instructional time",
"curricular demands", "lesson planning constraints",
"staffing capacity", "teacher availability",
"instructional burden", "curriculum overcrowding",
"limited teaching time", "staffing shortage",
"time allocation", "teaching schedule",
"instructional capacity", "non-teaching responsibilities",
"classroom time pressure", "teacher deployment",
"resource constraints for instruction"
)
The pedagogical and technical competencies of school staff related to nutrition, health, and food safety.
staff_skill = c(
"staff nutrition knowledge", "teacher nutrition competency",
"school health educators", "teacher skills",
"staff training", "training effectiveness",
"professional development for teachers",
"teacher capacity building", "staff development programs",
"food literacy training", "capacity development",
"in-service training", "teacher competence",
"educator readiness", "pedagogical support for nutrition",
"staff preparation", "training coverage",
"staff instructional skills", "training quality",
"nutrition educator training"
)
NPVReturn factors influencing the feasibility, sustainability, and scalability of school-based nutrition interventions, including direct costs and systemic financial constraints.
intervention_cost = c(
"intervention cost", "program cost", "implementation cost",
"financial feasibility", "budget constraint", "school finance",
"NPVReturn barrier", "affordability", "funding shortfall",
"resource allocation", "cost-effectiveness", "cost-benefit",
"financial sustainability", "school budget", "budget limitation",
"fiscal capacity", "operational cost", "nutrition program funding",
"financial barrier", "NPVReturn feasibility", "budget planning",
"cost per child", "nutrition intervention expenses"
)
Policy-driven or structural reforms to the school food environment, particularly within canteen services, aimed at improving food quality, nutritional adequacy, and student access to healthy meals.
canteen_change = c(
"canteen reform", "school meal change", "menu revision",
"canteen intervention", "food service reform",
"school food environment", "healthy food provision",
"nutrition-sensitive canteen", "school food policy",
"canteen nutrition standards", "meal plan reform",
"food service update", "school food regulation",
"canteen policy enforcement", "nutritional canteen shift",
"menu redesign", "food procurement reform",
"canteen-based intervention", "school food service management"
)
Educational initiatives and curricular strategies that provide students with knowledge, skills, and attitudes related to nutrition, diet, and healthy lifestyle practices.
nutrition_lessons = c(
"nutrition education", "health class", "food literacy lessons",
"nutrition curriculum", "classroom food education",
"school-based nutrition instruction", "dietary education",
"nutrition teaching materials", "health promotion teaching",
"lesson on healthy eating", "curriculum-integrated nutrition",
"food education", "nutrition behavior curriculum",
"classroom nutrition program", "healthy eating curriculum",
"nutrition awareness education", "school nutrition module",
"teacher-led nutrition instruction", "classroom wellness lesson"
)
Advertising and commercial promotion of unhealthy foods in the school environment or within children’s media ecosystems that influence eating behaviors and preferences.
food_ads = c(
"food marketing", "junk food advertising", "unhealthy food ads",
"child-targeted food marketing", "ads near school",
"commercial food promotion", "branded snack promotion",
"advertising to children", "point of sale marketing",
"school food advertising", "child-directed advertising",
"food and beverage marketing", "media food influence",
"food advertisements", "billboard marketing",
"TV food commercials", "digital food marketing",
"sugar-sweetened beverage marketing", "fast food advertising",
"packaging marketing to kids"
)
The external food environment accessible to students outside of school grounds, including vendors, markets, and informal sources that often provide low-nutrient, energy-dense foods.
off_campus = c(
"off-campus eating", "external food", "street food vendors",
"gate food", "junk food near school", "mobile food vendors",
"non-canteen food", "external food purchases",
"school gate vendors", "food from outside school",
"unregulated food sales", "open food access",
"snack carts near school", "neighborhood food environment",
"informal food sources", "out-of-school food access",
"off-premises food", "community vendors near school", "outside venue"
)
Food consumption and dietary behaviors that occur within school premises, including those influenced by school meals, canteen offerings, and in-school food policies.
on_campus = c(
"school food consumption", "on-site meal intake",
"canteen food intake", "in-school dietary habits",
"school-based eating", "healthy eating in school",
"school meal participation", "in-school food intake",
"on-campus nutrition", "eating during school hours",
"classroom snack practices", "canteen-based eating",
"student food behavior in school", "regulated food intake",
"school food environment behavior", "food consumption at school"
)
Academic and cognitive outcomes linked to nutrition and school health environments, including concentration, performance, and educational attainment.
student_learning = c(
"learning outcomes", "academic performance", "school achievement",
"cognitive benefit", "cognitive development", "classroom concentration",
"student attention span", "education impact",
"student knowledge gain", "test scores",
"reading comprehension", "numeracy outcomes",
"academic success", "educational attainment",
"classroom engagement", "learning readiness",
"mental focus", "academic participation",
"nutrition and learning", "school-based academic improvement",
"academic perfomance", "school perfomance", "student perfomance"
)
Physical health outcomes affected by school food environments, including growth, weight status, illness prevalence, and long-term well-being.
student_health = c(
"child health", "student well-being", "healthy weight",
"BMI improvement", "nutritional status",
"diet-related health", "physical development",
"illness reduction", "health outcome", "childhood obesity",
"malnutrition", "nutrition-related disease",
"student physical health", "diet quality outcome",
"chronic disease prevention", "health behavior",
"public health outcome", "body mass index",
"school nutrition outcomes", "growth monitoring"
)
search_terms <- list(
food_tech_training = food_tech_training,
teaching_resources = teaching_resources,
staff_skill = staff_skill,
intervention_cost = intervention_cost,
canteen_change = canteen_change,
nutrition_lessons = nutrition_lessons,
food_ads = food_ads,
off_campus = off_campus,
on_campus = on_campus,
student_learning = student_learning,
student_health = student_health
)
We created a comparison matrix to compare results of the literature and policy review and check whether we can consider them to provide either “Strong”, “Moderate”, “Weak”, or no evidence for our model.
check_hits <- function(search_terms, text) {
any(sapply(search_terms, function(t) grepl(t, text, ignore.case = TRUE)))
}
comparison_matrix <- data.frame(
bib_data_policy = sapply(search_terms, check_hits, text = paste(bib_texts_policy, collapse = " ")),
bib_data_lit = sapply(search_terms, check_hits, text = paste(bib_texts_literature, collapse = " ")),
gov_review = sapply(search_terms, check_hits, text = paste(policy_text, collapse = " ")),
lit_review = sapply(search_terms, check_hits, text = paste(literature_text, collapse = " "))
)
# Add numeric sum and evidence strength labels
comparison_matrix$support_score <- rowSums(comparison_matrix[ , c("bib_data_policy", "gov_review", "bib_data_lit", "lit_review")])
comparison_matrix$evidence_strength <- cut(
comparison_matrix$support_score,
breaks = c(-1, 0.1, 1.3, 3.1, 4.1),
labels = c("", "Weak", "Moderate", "Strong"),
right = TRUE
)
# Clean row names
rownames(comparison_matrix) <- gsub("_", " ", rownames(comparison_matrix))
rownames(comparison_matrix) <- stringr::str_to_title(rownames(comparison_matrix))
# Clean column names
colnames(comparison_matrix) <- gsub("_", " ", colnames(comparison_matrix))
colnames(comparison_matrix) <- stringr::str_to_title(colnames(comparison_matrix))
knitr::kable(
comparison_matrix[, !(names(comparison_matrix) %in% "Support Score")],
caption = "Model Component Evidence Presence"
)
| Bib Data Policy | Bib Data Lit | Gov Review | Lit Review | Evidence Strength | |
|---|---|---|---|---|---|
| Food Tech Training | TRUE | FALSE | FALSE | FALSE | Weak |
| Teaching Resources | FALSE | TRUE | FALSE | FALSE | Weak |
| Staff Skill | FALSE | TRUE | FALSE | FALSE | Weak |
| Intervention Cost | FALSE | TRUE | FALSE | TRUE | Moderate |
| Canteen Change | FALSE | TRUE | FALSE | TRUE | Moderate |
| Nutrition Lessons | TRUE | TRUE | FALSE | TRUE | Moderate |
| Food Ads | FALSE | TRUE | FALSE | FALSE | Weak |
| Off Campus | FALSE | FALSE | FALSE | FALSE | |
| On Campus | FALSE | FALSE | FALSE | FALSE | |
| Student Learning | TRUE | TRUE | FALSE | TRUE | Moderate |
| Student Health | TRUE | TRUE | TRUE | TRUE | Strong |
source("functions/get_hits_by_bib.R")
literature_hits <- get_hits_by_bib(search_terms, bib_texts_literature)
policy_hits <- get_hits_by_bib(search_terms, bib_texts_policy)
summary_hits <- data.frame(
Literature_Count = sapply(literature_hits, length),
Policy_Count = sapply(policy_hits, length)
)
In policy documents we found mixed support for the variables we expressed in our model:
1 referencing food tech training.
Minister (2019)
0 referencing teaching resources.
0 referencing staff skill.
0 referencing intervention cost.
0 referencing canteen change.
4 referencing nutrition lessons.
Education and Training (2022a), Minister (2021), Minister
(2022), Minister (2016)
0 referencing food ads.
0 referencing off-campus food.
0 referencing on-campus food.
1 referencing student learning.
Assembly (2019)
5 referencing student health.
Minister (2022), Education and Training (2022b), Minister (2016), Minister
(2019), Health (2019)
In the literature we found supporting evidence for the variables we expressed in our model:
0 referencing food tech training.
1 referencing teaching resources.
Wu et al. (2015)
1 referencing staff skill.
Ouda et al. (2019)
1 referencing intervention cost.
Parnham et al. (2022)
6 referencing canteen change.
Wu et al. (2015), Grigsby-Duffy et al. (2022), S. Pongutta et al. (2023), S. Pongutta et al. (2022), Castellari and Berning (2016), Martinelli et al. (2023)
11 referencing nutrition lessons.
Steyn et al. (2015), S. Pongutta et al. (2023), Taylor et al. (2011), S.
Pongutta et al. (2022), Aroesty et al.
(2018), Trung Le (2012), Hockamp et al. (2024), Liou et al. (2015), Walton, Signal, and Thomson (2013), Ohri-Vachaspati et al. (2016), Woo (2015)
1 referencing food ads.
Walton, Signal, and Thomson
(2013)
0 referencing off-campus food.
0 referencing on-campus food.
2 referencing student learning.
Ouda et al. (2019), Aroesty et al. (2018)
10 referencing student health.
Wu et al. (2015), Parnham et al. (2022), S.
Pongutta et al. (2023), Taylor et al.
(2011), S. Pongutta et al. (2022),
Aroesty et al. (2018), Trung Le (2012), Liou et
al. (2015), Walton, Signal, and Thomson
(2013), Martinelli et al.
(2023)
We took all these findings into account and also talked to experts to update the model.
We ran the full model using Monte Carlo
simulation to estimate the likely outcomes of different school nutrition
policy configurations. All uncertain inputs were defined using
probability distributions (e.g. truncated normal, beta, or uniform).
Policy toggles, such as staff training and canteen monitoring, were
included as binary variables with a 50% probability to simulate diverse
configurations. This allowed exploration of combined and independent
effects of policy elements.
All model inputs were modeled probabilistically based on expert
judgment and literature estimates. See the input file
inputs_school_policy.csv for full details.
The outputs include both health cost savings (e.g. avoided diagnoses and treatments) and NPVReturn return (net present value compared to the baseline). These are plotted below to visualize the decision space.
The three outcomes tracked were, NPVReturn Return (Net Present Value of policy vs. no policy), Health Cost Savings (avoided treatment and diagnosis costs), Cost per Student (total implementation cost per student).
source("functions/school_policy_function.R")
# Load inputs and run simulation
input_data <- estimate_read_csv("data/inputs_school_policy.csv")
numberOfModelRuns <- 10000
set.seed(84)
simulation_result <- mcSimulation(
estimate = input_data,
model_function = school_policy_function,
numberOfModelRuns = numberOfModelRuns,
functionSyntax = "plainNames"
)
We used a Monte Carlo simulation to estimate the economic and health outcomes of school meal policy interventions under uncertainty. We ran the model 10,000 times to capture uncertainty across a wide range of possible scenarios. The results show that school policy interventions can offer both cost savings and improved student health. The model includes toggle variables to simulate the presence or absence of specific interventions, allowing us to identify which combinations of actions appear in the most efficient scenarios.
The Pareto front includes simulations that are not outperformed in all objectives by any other scenario. These are the most efficient configurations—improvements in one outcome would require trade-offs in others.
We then performed a multi-objective Pareto analysis across three dimensions: The economic return in the form of a discounted Net Present Value (NPV), health benefits and education benefits.
The resulting Pareto front reveals a clear trade-off curve. Policy configurations that maximize economic return do not necessarily maximize health benefits or minimize per-student costs. Conversely, policies with strong health outcomes can come at higher per-student costs or lower net present values.
These findings highlight the existence of efficient policy options that cannot be improved in one objective without sacrificing another. Decision-makers can use this front to choose policies based on priorities — e.g., maximizing health benefits under a fixed cost constraint, or seeking the best ROI with acceptable health impacts.
sim_data <- data.frame(simulation_result$x, simulation_result$y[1:3]) # Extract all output values
# Extended Pareto filter for 3D (non-dominated solutions across 3 objectives)
pareto_filter_3d <- function(df, obj1, obj2, obj3) {
pareto <- rep(TRUE, nrow(df))
for (i in 1:nrow(df)) {
pareto[i] <- !any(
df[[obj1]] > df[[obj1]][i] &
df[[obj2]] >= df[[obj2]][i] &
df[[obj3]] >= df[[obj3]][i] |
df[[obj1]] >= df[[obj1]][i] &
df[[obj2]] > df[[obj2]][i] &
df[[obj3]] >= df[[obj3]][i] |
df[[obj1]] >= df[[obj1]][i] &
df[[obj2]] >= df[[obj2]][i] &
df[[obj3]] > df[[obj3]][i]
)
}
return(df[pareto, ])
}
# Prepare full data
# costs per student are calculated as a minimization of the costs per student education_benefit <- 1-(sum(policy_cost) / n_student)
sim_data <- data.frame(simulation_result$x, simulation_result$y[, c("decision_value", "net_health_benefit", "education_benefit")])
# Get Pareto front
pareto_3d <- pareto_filter_3d(sim_data, "decision_value", "net_health_benefit", "education_benefit")
# Combine flag to indicate Pareto-optimal points
sim_data$on_pareto <- apply(sim_data[, c("decision_value", "net_health_benefit", "education_benefit")], 1, function(pt) {
any(apply(pareto_3d[, c("decision_value", "net_health_benefit", "education_benefit")], 1, function(pf) all(pt == pf)))
})
# Summarize means of input variables
input_vars <- setdiff(colnames(simulation_result$x), c("decision_value", "net_health_benefit", "education_benefit"))
# Add Pareto label
sim_data$Pareto <- ifelse(sim_data$on_pareto, "Pareto", "Other")
# Create long format for all 3 outcomes
pairwise_data <- bind_rows(
sim_data %>% select(x = decision_value, y = net_health_benefit, Pareto) %>% mutate(Pair = "NPV vs Health"),
sim_data %>% select(x = decision_value, y = education_benefit, Pareto) %>% mutate(Pair = "NPV vs Education"),
sim_data %>% select(x = net_health_benefit, y = education_benefit, Pareto) %>% mutate(Pair = "Health vs Education")
)
# Rename columns for readability
plot_data <- sim_data %>%
dplyr::rename(
NPVReturn = decision_value,
Health = net_health_benefit,
EduBenefit = education_benefit
)
# Define color palette
pareto_colors <- c("Other" = "gray", "Pareto" = "red")
# Individual plots
p1 <- ggplot(plot_data, aes(x = NPVReturn, y = Health, color = Pareto)) +
geom_point(size = 1.5, alpha = 0.6) +
scale_color_manual(values = pareto_colors) +
labs(x = "NPV (million VND)", y = "Health benefit (million VND)") +
theme_minimal(base_size = 12) +
theme(
legend.position = "none",
axis.text.x = element_blank(),
axis.ticks.x = element_blank(),
axis.title.x = element_blank()
)
p2 <- ggplot(plot_data, aes(x = NPVReturn, y = EduBenefit, color = Pareto)) +
geom_point(size = 1.5, alpha = 0.6) +
scale_color_manual(values = pareto_colors) +
labs(x = "NPV (million VND)", y = "Education benefit (million VND)") +
theme_minimal(base_size = 12) +
theme(legend.position = "none")
p3 <- ggplot(plot_data, aes(x = Health, y = EduBenefit, color = Pareto)) +
geom_point(size = 1.5, alpha = 0.6) +
scale_color_manual(values = pareto_colors) +
labs(x = "Health benefit (million VND)", y = "Education benefit (million VND)") +
theme_minimal(base_size = 12) +
theme(
legend.position = "none",
axis.text.y = element_blank(),
axis.ticks.y = element_blank(),
axis.title.y = element_blank()
)
# Shared legend
legend <- cowplot::get_legend(
p1 + theme(legend.position = "right", legend.title = element_blank())
)
## Warning in get_plot_component(plot, "guide-box"): Multiple components found;
## returning the first one. To return all, use `return_all = TRUE`.
# Arrange as a 2x2 panel (bottom-left = NPV vs Health)
final_plot <- cowplot::plot_grid(
p1, legend,
p2, p3,
ncol = 2, rel_widths = c(1, 1)
)
final_plot
ggsave("figures/Fig_Pareto.png", final_plot, width = 10, height = 7)
Figure 2. Pairwise comparison of policy outcomes. Each point is a simulation result. Red dots indicate simulations on the Pareto frontier (non-dominated). Panels show trade-offs between NPVReturn Return, Health, and Cost per Student.
toggle_vars <- c(
"use_staff_training_foodsafety",
"use_staff_training_nutrition",
"use_physical_activity",
"use_menu_change_rda",
"use_limit_unhealthy_canteen_food"
)
summary_table <- data.frame(
Mean_All = sapply(simulation_result$x[, toggle_vars], mean),
Mean_Pareto = sapply(sim_data[sim_data$on_pareto, toggle_vars], mean)
)
summary_table$Change_Pareto_vs_All <- (summary_table$Mean_Pareto - summary_table$Mean_All) / summary_table$Mean_All * 100
summary_table <- summary_table[order(-abs(summary_table$Change_Pareto_vs_All)), ]
rownames(summary_table) <- c(
"Food Safety Training",
"Nutrition Training",
"Physical Activity Training",
"Menu Change to Meet RDA",
"Limit Unhealthy Canteen Food"
)
knitr::kable(summary_table, digits = 2, caption = "Toggle Settings in Pareto-Optimal Simulations")
| Mean_All | Mean_Pareto | Change_Pareto_vs_All | |
|---|---|---|---|
| Food Safety Training | 0.50 | 0.67 | 34.53 |
| Nutrition Training | 0.50 | 0.65 | 28.58 |
| Physical Activity Training | 0.51 | 0.65 | 28.04 |
| Menu Change to Meet RDA | 0.50 | 0.57 | 14.12 |
| Limit Unhealthy Canteen Food | 0.50 | 0.53 | 6.51 |
Pareto-optimal simulations most often included food safety, nutrition, and physical activity training, highlighting the value of capacity building among school staff. These interventions likely improved implementation fidelity, enhanced student health and performance, and kept costs within budget. Menu adjustments and limiting unhealthy foods were less frequently decisive but may play a complementary role in well-rounded programs.
Food Safety Training (+34.5%) was the most frequently included intervention in Pareto-optimal runs. Improving hygiene and food safety practices has strong downstream effects—likely through reduced illness and associated costs—making it a high-value, cost-effective policy component.
Nutrition Training (+28.6%) was often included in optimal solutions, supporting improved food-related decision-making. The inclusion of this training can enhance staff capacity, contributing to better implementation of dietary guidelines and positive health outcomes.
Physical Activity Training (+28.0%) appears in nearly a third more optimal scenarios than in general. This suggests a synergistic benefit with nutrition interventions, improving both BMI-related health outcomes and student performance, strengthening the overall impact of the program.
Menu Change to Meet RDA (+14.1%) can contribute directly to better nutrient intake and reductions in under-/overweight rates. While not the most dominant driver, it appears to add value when combined with training interventions.
Limit Unhealthy Canteen Food (+6.5%) had the least differential effect, suggesting that while it may contribute to outcomes, its impact alone may be limited or context-dependent since unhealthy foods in the canteen were not a major baseline problem.
While outcomes vary, a subset of efficient policy configurations emerged that balance return on investment, health improvements, and implementation cost.
To better understand what drives the most efficient outcomes, we compared the input variables for simulations on the Pareto frontier (non-dominated in terms of return, health impact, and cost) to those across all simulations.
We compared the mean values of all input variables between the full simulation set and the Pareto-optimal subset. The variables with the greatest deviations help identify factors that characterize efficient policy configurations.
The column Mean_Pareto shows the average value of each
input among simulations on the Pareto front. Mean_All shows
the average across the full set of model runs. The difference is
summarized in Change_Pareto_vs_All. It is the percent
change from the average in the full dataset to the average in
Pareto-optimal cases. Positive values mean the variable was higher on
average in efficient cases, suggesting it’s associated with good
performance.
summary_table <- data.frame(
Mean_All = sapply(simulation_result$x[, input_vars], mean),
Mean_Pareto = sapply(sim_data[sim_data$on_pareto, input_vars], mean)
)
# Calculate relative difference
summary_table$Change_Pareto_vs_All <- (summary_table$Mean_Pareto - summary_table$Mean_All) / summary_table$Mean_All * 100
# Only the Pareto-optimal subset (those not dominated on all three outcome axes: NPV, health, cost).
summary_table <- summary_table[order(-abs(summary_table$Change_Pareto_vs_All)), ]
knitr::kable(summary_table, digits = 2, caption = "Input Trends in Pareto-Optimal Simulations")
| Mean_All | Mean_Pareto | Change_Pareto_vs_All | |
|---|---|---|---|
| disease_diagnosis_cost | 0.50 | 1.01 | 101.25 |
| n_reduce_disease_diagnosis | 0.91 | 1.59 | 73.98 |
| n_reduce_disease_treatment | 0.34 | 0.54 | 59.66 |
| value_of_learning_per_student | 5.27 | 8.37 | 58.84 |
| student_performance_improvement | 0.05 | 0.08 | 51.56 |
| baseline_disease_diagnosis | 3.46 | 4.96 | 43.26 |
| costs_exceed_budget | 0.09 | 0.06 | -35.68 |
| limit_unhealthy_canteen_food_nutrition_effect | 0.09 | 0.12 | 35.61 |
| use_physical_activity | 0.50 | 0.67 | 34.53 |
| resistance_existing_staff_belief | 0.09 | 0.12 | 32.46 |
| meal_nutrition_practices_staff | 0.09 | 0.06 | -31.63 |
| use_limit_unhealthy_canteen_food | 0.50 | 0.65 | 28.58 |
| unhealthy_schoolgate_food_risk | 0.18 | 0.23 | 28.30 |
| use_staff_training_foodsafety | 0.51 | 0.65 | 28.04 |
| monitoring_canteen_cost | 1.69 | 1.23 | -27.45 |
| n_student | 1493.66 | 1901.10 | 27.28 |
| physical_activity_effect | 0.12 | 0.15 | 25.15 |
| overweight_threshold | 0.09 | 0.11 | 23.23 |
| staff_knowledge_food_safety | 0.09 | 0.07 | -21.64 |
| nutrition_status_bmi_high | 0.09 | 0.07 | -20.80 |
| advertisement_exposure | 0.05 | 0.04 | -18.47 |
| training_costs_nutrition_annual | 5.05 | 5.97 | 18.42 |
| school_meet_mealrequirement | 0.09 | 0.11 | 18.32 |
| peer_influence_factor | 0.05 | 0.04 | -16.74 |
| resistance_child_preferences_attitude | 0.09 | 0.11 | 15.11 |
| food_access_and_consumption_reduce_underweight | 0.05 | 0.04 | -14.85 |
| use_menu_change_rda | 0.50 | 0.57 | 14.12 |
| canteen_selling_unhealthy_foods | 0.09 | 0.08 | -13.92 |
| underweight_diagnosis_risk_multiplier | 0.09 | 0.08 | -13.92 |
| overweight_diagnosis_risk_multiplier | 0.09 | 0.10 | 12.84 |
| practice_school_management_board | 0.09 | 0.10 | 10.78 |
| unhealthy_food_exposure | 0.05 | 0.05 | -10.41 |
| resistance_existing_staff_practices | 0.09 | 0.08 | -10.04 |
| training_costs_nutrition_1st_year | 10.01 | 10.94 | 9.31 |
| menu_change_rda_nutrition_effect | 0.09 | 0.10 | 8.92 |
| parents_monitor_school_meal_practices | 0.09 | 0.10 | 8.14 |
| use_staff_training_nutrition | 0.50 | 0.53 | 6.51 |
| staff_training_foodsafety_nutrition_effect | 0.05 | 0.05 | -6.41 |
| impact_risk_unhealthy_schoolgate_food | 0.09 | 0.09 | -6.24 |
| training_costs_foodsafety_annual | 3.45 | 3.24 | -6.03 |
| baseline_disease_treatment | 1.25 | 1.18 | -5.97 |
| underweight_treatment_risk_multiplier | 0.09 | 0.10 | 5.16 |
| change_menu_costs_annual | 8.48 | 8.90 | 4.94 |
| food_safety_practices_staff | 0.09 | 0.09 | 3.95 |
| unhealthy_canteen_foods | 0.05 | 0.05 | -3.52 |
| discount_rate | 8.49 | 8.21 | -3.31 |
| staff_knowledge_nutrition | 0.09 | 0.09 | -2.93 |
| staff_training_nutrition_effect | 0.09 | 0.09 | 2.82 |
| disease_treatment_cost | 0.10 | 0.10 | 2.77 |
| training_costs_physical_activity_1st_year | 7.47 | 7.67 | 2.71 |
| food_access_and_consumption_reduce_overweight | 0.05 | 0.05 | -2.69 |
| underweight_threshold | 0.09 | 0.09 | -1.48 |
| training_costs_foodsafety_1st_year | 7.49 | 7.58 | 1.20 |
| overweight_treatment_risk_multiplier | 0.09 | 0.09 | -1.19 |
| training_costs_physical_activity_annual | 3.34 | 3.38 | 1.01 |
| children_access_healthy_food | 0.09 | 0.09 | -0.95 |
| food_access_and_consumption_threshold | 0.65 | 0.65 | 0.70 |
| unhealthy_school_gate_foods | 0.09 | 0.09 | -0.50 |
| CV_value | 0.25 | 0.25 | -0.49 |
| children_consume_healthy_food | 0.09 | 0.09 | 0.46 |
| nutrition_status_bmi_low | 0.09 | 0.09 | -0.11 |
| number_of_years | 5.00 | 5.00 | 0.00 |
Pareto-optimal simulations were characterized by higher health and educational returns, especially in contexts with greater initial disease burden and higher diagnosis costs. These scenarios achieved substantial reductions in treatment and diagnosis events, while maintaining cost efficiency and budget adherence. The findings support the effectiveness of preventive and educational interventions in school-based nutrition policies, particularly where baseline health risks are high.
Higher diagnosis costs are strongly associated with Pareto-optimal simulations. This seemingly counterintuitive result reflects scenarios where prevention was prioritized: higher per-diagnosis costs make prevention (via the policy) more economically attractive, improving relative cost-effectiveness.
Pareto-optimal scenarios see a much greater reduction in disease diagnoses. This shows the policy is highly effective at reducing the burden of preventable illness, which contributes positively to both health and cost outcomes. More treatment events are avoided in optimal simulations.Reinforces the preventive effects of the policy drive better outcomes by lowering treatment needs, especially in high-risk populations. The Pareto-optimal scenarios emphasize higher returns on educational investment. These simulations likely include nutrition education or physical activity components that improve cognitive and academic outcomes, which strengthens the policy’s value. Better student performance aligns with optimal outcomes. Improvements in learning outcomes contribute to broader benefits, supporting higher returns in the model.
Scenarios with a higher starting disease burden are more likely to benefit. Policies show greater marginal returns in contexts with worse baseline health, where there’s more room for improvement. Exceeding budget constraints is less common in Pareto-optimal runs. Optimal simulations tend to stay within budget, reinforcing that cost containment is an important feature of high-performing interventions.
While the Monte Carlo simulation and Pareto analysis identify policy scenarios with favorable outcomes, we found that many input variables exerted weak or inconsistent influence across runs. Only a small number of parameters—such as the number of students, cost of diagnosis, and staff training investments—appeared consistently influential in efficient scenarios.
This suggests that model results are sensitive to the scale of implementation (e.g. school size) and a few high-leverage parameters. Other inputs had relatively limited or noisy influence on results. This highlights the importance of careful parameter validation and the need for further expert engagement or empirical data to refine key estimates.
Overall, this simple model provides a transparent structure for exploring trade-offs, and the number of students emerges as the key scaling driver of outcome magnitude. Future work should prioritize narrowing uncertainty around critical parameters like student population, cost scaling, and implementation efficiency.
This analysis provides insight into how specific school nutrition policy components influence multiple objectives under uncertainty. The approach demonstrates how evidence-based modeling can inform practical decision-making, supporting the design of more effective and efficient interventions.